#include <iostream>
#include <cstring>
using namespace std;

/*
	通过现象反推：系统默认的拷贝构造函数究竟帮我们做了什么(虽然肉眼看不到)
*/

class Cat
{
public:
	//定义猫类的构造函数
	Cat(string _name,int _age)
	{
		name=_name;
		age=_age;
		cout<<"猫的构造函数"<<endl;
	}
	void show()
	{
		cout<<"name : "<<name<<"  age is: "<<age<<endl;
	}

private:
	int age;
	string name;
};

int main(int argc,char **argv)
{
	Cat c1("来福",5);
	//调用系统默认提供的拷贝构造
	/*
		//this就是c2  other就是c1
		Cat(const Cat &other)
		{
			this->name=other.name;
			this->age=other.age;
		}
	*/
	Cat c2=c1;  //无法直观的感受到调用了拷贝构造函数
	//Cat c2(c1);      //调用拷贝构造函数
    //Cat c2=Cat(c1);  //调用拷贝构造函数              
                    
	//验证结果
	c2.show();

	return 0;	
}